package cn.bupt.adt.service;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Service;

import cn.bupt.adt.entity.autogenerate.Doctor;
import cn.bupt.adt.entity.autogenerate.DoctorAppUser;
import cn.bupt.adt.entity.autogenerate.DoctorOperationTypeView;
import cn.bupt.adt.entity.autogenerate.OperationType;
import cn.bupt.adt.entity.autogenerate.Order;
import cn.bupt.adt.entity.autogenerate.SubOperationType;
import cn.bupt.adt.model.DoctorModel;

@Service
public interface IDoctorService {

//	public boolean addDoctor(Doctor doc,HttpServletRequest request, int[] operationTypeId);
	public boolean modifyDoctor(DoctorAppUser doc);
	public boolean removeDoctor(Doctor doc);
	public List<DoctorModel> getAllDoctor(HttpServletRequest request);
	//获取所有手术类型(未删除的)
	public List<OperationType> getAllOpertionType();
	public boolean addOperationType(OperationType type);
	public boolean deleteOperationTypeById(int id);
	
	public int appointDoctor(Integer doctorId);
	public DoctorModel getDoctorById(int id);
	List<DoctorAppUser> getDoctorsByOrder(Order order);
	public boolean deleteDoctorById(int id);
	public boolean addDoctor(DoctorAppUser doctor);
	public List<DoctorOperationTypeView> getOperationTypesByDoctorId(int id);
	public boolean reviewDoctorById(int id);
	public boolean modifyDoctor(DoctorAppUser doctor, HttpServletRequest request, int[] operationTypeId);
	public List<DoctorModel> getDoctorByFuzzyName(String content);
	public List<DoctorModel> getDoctorByPhone(String content);
	public List<DoctorModel> getUnreviewDoctor(HttpServletRequest request);
	public List<DoctorModel> getUnreviewDoctorByFuzzyName(String content);
	public List<DoctorModel> getUnreviewDoctorByPhone(String content);
	public List<DoctorModel> getReviewDoctor(HttpServletRequest request);
	public List<DoctorModel> getReviewDoctorByFuzzyName(String content);
	public List<DoctorModel> getReviewDoctorByPhone(String content);
	public boolean addSubOperationType(SubOperationType subOperationType);
	//获取一级手术类型下的所有二级手术(未删除的)
	public List<SubOperationType> getSubOperationTypeByParentId(int parentId);
	public boolean deleteSubOperationTypeById(int id);
	public List<SubOperationType> getAllSubOpertionType();
	public OperationType getOperationTypeById(int parentId);
	public List<SubOperationType> getSubOperationTypeByParentIds(List<Integer> typeIds);
	//重置医生密码
	public boolean resetDoctorPasswdById(int id);
}
